package yur.wedding.modules.sys.controller;

import java.io.File;
import java.util.*;


import com.alibaba.fastjson.JSON;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;
import yur.wedding.common.utils.Constant;
import yur.wedding.modules.sys.Vo.wanGaddImgVo;
import yur.wedding.modules.sys.entity.SysDictEntity;
import yur.wedding.modules.sys.service.SysDictService;

import yur.wedding.utils.PageUtils;
import yur.wedding.utils.R;
import yur.wedding.validator.ValidatorUtils;


/**
 * 数据字典表
 *
 * @author Yur
 * @email ${email}
 * @date 2021-11-09 21:15:11
 */
@RestController
@RequestMapping("sys/sysdict")
public class SysDictController {
    @Autowired
    private SysDictService sysDictService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    @RequiresPermissions("sys:sysdict:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = sysDictService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    @RequiresPermissions("sys:sysdict:info")
    public R info(@PathVariable("id") Long id){
        SysDictEntity sysDict = sysDictService.getById(id);

        return R.ok().put("sysDict", sysDict);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    @RequiresPermissions("sys:sysdict:save")
    public R save(@RequestBody SysDictEntity sysDict){
        sysDictService.save(sysDict);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @RequiresPermissions("sys:sysdict:update")
    public R update(@RequestBody SysDictEntity sysDict){
        ValidatorUtils.validateEntity(sysDict);
        sysDictService.updateById(sysDict);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    @RequiresPermissions("sys:sysdict:delete")
    public R delete(@RequestBody Long[] ids){
        sysDictService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

    /**
     * 查询图片
     */
    @RequestMapping("/getimgpathlist")
    @RequiresPermissions("sys:sysdict:getimgpathlist")
    public R getimgpathlist(){

     List<SysDictEntity>  imgList=sysDictService.getimgpathlist();


        return R.ok().put("imgList",imgList);
    }

    /**
     * 上传图片
     */
    @RequestMapping(path = "/logoImgUpdete",method = RequestMethod.POST)
    @RequiresPermissions("sys:sysdict:logoImgUpdete")
    public R logoImgUpdete(@RequestParam("sys-logo-img-uploader") MultipartFile file,@RequestParam("imGcode")String imGcode){
        System.out.println("file----"+file+"--------"+imGcode);
        try {

            if (file != null) {

                String fileName = System.currentTimeMillis() + file.getOriginalFilename();
                String upload_file_dir= Constant.UPLOADPATHIMG;//注意这里需要添加目录信息

                String destFileName =  Constant.UPLOADPATHIMG +fileName;
                //4.第一次运行的时候，这个文件所在的目录往往是不存在的，这里需要创建一下目录（创建到了webapp下uploaded文件夹下）
                File upload_file_dir_file = new File(upload_file_dir);
                System.out.println(fileName+"----"+upload_file_dir+"------"+upload_file_dir_file);
                if (!upload_file_dir_file.exists())
                {
                    upload_file_dir_file.mkdirs();
                }
                //5.把浏览器上传的文件复制到希望的位置
                File targetFile = new File(upload_file_dir_file, fileName);
                file.transferTo(targetFile);
              //  company.setBusinessLicenseUrl(fileName);

                sysDictService.imgUpdate("wedding_admin/static/"+fileName,imGcode);
            }
           // companyMapper.addCompay(company);
        }catch (Exception e){
            e.printStackTrace();
        }

        return R.ok().put("图片状态","添加图片成功");
    }


    /**
     * 保存标题  保存是否显示验证码
     */
    @RequestMapping("/saveForm")
    @RequiresPermissions("sys:sysdict:saveForm")
    public R saveForm(@RequestBody String[] dictList){

        sysDictService.saveForm(dictList);

        return R.ok();
    }


    /**
     * 首页验证码等  该方法不进入权限管控
     */
    @RequestMapping("/loginimgpathlist")
    public R loginimgpathlist(){

        List<SysDictEntity>  imgList=sysDictService.loginimgpathlist();


        return R.ok().put("imgList",imgList);
    }




    /**
     *   用于  富文本编辑器  上传图片地址
     * 上传图片
     * @return
     */
    @RequestMapping(path = "/wangEditoraddImg",method = RequestMethod.POST)
    public String wangEditoraddImg(@RequestParam("file")MultipartFile file){
        Map<String,Object> map=new HashMap<>();
        System.out.println("file----"+file+"--------");
        try {
            if (file != null) {
                String fileName = System.currentTimeMillis() + file.getOriginalFilename();
                String upload_file_dir= Constant.UPLOADPATHIMG;//注意这里需要添加目录信息
                String destFileName =  Constant.UPLOADPATHIMG +fileName;
                //4.第一次运行的时候，这个文件所在的目录往往是不存在的，这里需要创建一下目录（创建到了webapp下uploaded文件夹下）
                File upload_file_dir_file = new File(upload_file_dir);
                System.out.println(fileName+"----"+upload_file_dir+"------"+upload_file_dir_file);
                if (!upload_file_dir_file.exists())
                {
                    upload_file_dir_file.mkdirs();
                }
                //5.把浏览器上传的文件复制到希望的位置
                File targetFile = new File(upload_file_dir_file, fileName);
                file.transferTo(targetFile);
                String url="http://localhost:9001/wedding_admin/static/"+fileName;
               //TODO  正式上线需要习惯项目地址
                wanGaddImgVo vo=new wanGaddImgVo();
                vo.setUrl(url);
                vo.setAlt(fileName);
                vo.setHref(url);
                map.put("errno",0);
                map.put("data", JSON.toJSON(vo));
            }
            // companyMapper.addCompay(company);
        }catch (Exception e){
            e.printStackTrace();
        }



        return JSON.toJSONString(map);
    }

}
